
        <html>
			<head>
			     <title>谈谈比特币的机制及攻击 - 囧思九千</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/736">http://drops.wooyun.org/papers/736</a></h1>
				
      <p>
        <p>大家好，我是OpenCDN团队的Twwy(<a href="http://weibo.com/jelope/">@囧思八千</a>)。</p>

<p>我只是从技术角度，阐述一下个人观点，如果有什么金融的原理上的错误，还望大牛指出。</p>

<p>首先，本文并不是对比特币的算法上的缺陷进行探究，我认为比特币的算法没有缺陷（不保证真的有什么天才发现比特币算法上的漏洞）。当然，这点也成为人们对比特币的担心：“万一哪天这个天才出现了，那我手上的比特币不就变成废纸了吗？”这点，可以归结为对比特币的实际价值的怀疑。不过，本文并不是探讨这种“有的没的万一哪一天”的担忧的。我们，逻辑说话。</p>

<!--more-->

<p>然后，如果你对比特币的概念还有些云里雾里，那么我先给比特币做个比喻：</p>

<pre><code>他是一种比货币流通更方便的黄金。
</code></pre>

<p>为什么会有货币？因为黄金流通不方便。那么货币有黄金保值吗？</p>

<p>没有，货币的发行机构随时可以调整汇率，你手上的货币随时可能变成一张废纸。</p>

<p>这个钱就像政府以方便流通为由，给你一个内存指针，而指针背后的变量随时会变（政府好聪明）。</p>

<p>那么，有没有一种魔法可以让黄金变得很轻很小，然后容易流通呢？</p>

<h4>有，比特币就是。</h4>

<p>比特币用算法做保证，保证了这个比特币的数量是有限的，并且获得比特币都要经过人人平等的挖矿计算（是不是有点像黄金），不是像政府可以随时调整货币。所以，这个也正是这个项目危险的地方，一旦比特币作为货币被大家认可，那么国家就无法通过调整货币发行量来进行经济的一些宏观调控了。当然，是不是资本家也无法通过货币来进行资本剥削了呢？这个纯属我的猜测。如果这样的话，那是不是作为社会主义的中国应该首先支持比特币啊？</p>

<p>我想，比特币的设计者就是这么想的，这是多么美妙的一个世界啊。</p>

<p>没有了可操纵的货币，没有了通过货币实现的剥削。</p>

<p>每个人赚的钱就是自己的，而不是像某些国家，钱放着越放价值越少，越放久能买的东西越少。</p>

<p>不过，你也一定会想，假如整个世界的经济都是基于一个算法之上，那么算法万一被击破了不是整个世界就崩盘了？</p>

<p>我只能说，比特币这方面的机制确实太巧妙了，任何与他为敌的都会被伤害反弹！</p>

<p>而这些攻击如果顺着比特币的游戏规则走，却能获得收益！我们就拿51%攻击为例，我们先来看下51%攻击的实施方法。</p>

<blockquote>
  <p>准备工作：</p>
  
  <ol>
  <li>既然是51%攻击，就必须首先掌握足够的算力，无论是控制矿池，还是利用其它计算资源，总之必须使你的算力领先与现在网络总算力，领先的幅度越大，成功的可能性越高；</li>
  <li>拿到足够的BTC作为筹码，无论是自己挖到的，还是从任何渠道买的，都可以；</li>
  </ol>
  
  <p>攻击步骤：</p>
  
  <ol>
  <li>将手中的BTC充值各大交易所，然后卖掉，提现；或者也可以直接卖给某人或某一群人；</li>
  <li>运用手中的算力，从自己对外付款交易之前的区块开始，忽略自己所有对外的付款交易，重新构造后面的区块，利用算力优势与全网赛跑，当最终创建的区块长度超过原主分支区块，成为新的主分支，至此，攻击完成；</li>
  </ol>
</blockquote>

<p>我们来概括一下，就是掌握了全网51%的计算力之后，可以抹去最近的任一一笔交易（注意：是只能抹去，原因后面还会提到）我想，从逻辑角度来讲，这个攻击是没有问题。但是，是不是完成这次攻击就能获益呢？你太天真了。首先，因为51%攻击一次成本是很高的，那也意味着你手上掌握的比特币数量也是很可观的，而如果你抛售比特币足以引起价格下跌，所以你抛售获得的现金一定会低于你之前买进的价格。于是你可能会说，那有怎么样呢，反正我可以通过抹去交易把比特币拿回来。是吗？你一旦实施成功51%成功，全球的人都知道比特币被攻击。然后大家对于比特币的信心会瞬间崩盘，你手上辛辛苦苦弄回来的比特币还有意义吗？就是一堆废数据了。然后我们清算一下，完成这次攻击后，比特币崩盘，所有人都损失，攻击者也损失，可能损失更惨重。那么是否有可能少抹一些数据来避免影响呢？可以啊，你能为调动计算力买单，你能攻击一次赔一次确实可以啊，但是你为了什么呢？这也就是比特币的伤害反弹特性，现在如果某个富二代砸老子几亿美金还是可以干掉比特币的，但是随着时间的推移，难度越来越高。</p>

<p>现在，我们来解释一下刚刚为什么交易只能抹去。因为所有的交易账单都是RSA加密的，而对比特币进行攻击的关键就是要使账单出错。如果你说可能破解出RSA的私钥，然后来篡改账单，那我只能说呵呵了。所以比特币也能很骄傲地说，我们是基于密码学的。确实，因为RSA存在，我们无法伪造账单，但是我们可以删除账单。怎么删除账单呢？就是用上面的那个会被伤害反弹的51%攻击来删除账单。同时，大家也要注意，如果一旦我把RAS密钥销毁掉，也就意味那个余额无人能动，这些比特币就永远地从世界上消失了。这个特性我们在后面会提到，将会对比特币产生巨大的影响。</p>

<p>于是，大家看，比特币系统真的像一个武林中的绝世法宝，他不断吸取着世界上的精华，为他所用，无人能敌，伤他者只能自伤，随着他日益强大，武林中能与他同归于尽的人都屈指可数。不过，这种形容不是都是形容那些反面角色或者反面技能的吗？是的，现在，我们绕到他的反面来看看。</p>

<p>从算法或者设计角度来看比特币，简直是完美。不过，我们来看看他的一些更完美的特性吧？比特币具有极强的匿名性，任意人可以随时生成一个收钱地址来收钱，那样，要洗个钱简直轻而易举。不过，也正因为比特币的分布式特点，每个客户端都存有全世界的所有账单，因为每个人的余额是是根据比特币系统产生到现在的所有账单计算出来的。这是不是一个更牛逼的特性？世界上所有的交易全部是透明公开的！那也就是说，如果你公开了你的收钱地址，也就相当于公开了你的钱包余额。这个，你能接受吗？同时，你也要注意，无论比特币在比特币网络怎么流通，他终究要转换成可用的东西，比如现金、物品。而这个转换一般来说肯定是实名的，由此，通过对应的比特币地址，可以直接找出你的所有比特币的消费行为，因为这些账单对世界上所有人是透明的。那么有可能通过N多个收钱地址和复杂的交易联结来隐藏吗？是可能的。但是，这也就导致了比特币好心干了坏事，该隐藏的信息（比如个人余额）没有隐藏，不该隐藏的信息（比如洗钱）却进行了隐藏。我想，一定也有人会说，如果账单全透明了又怎么样？可能会带来一个人类诚信的新纪元。是吗？随便拿个例子，比如《三体》中的三体人，他们的世界上没有欺骗，所有人的思维全部互相可见。所导致的后果是？被人类坑。在人类世界，思维透明和钱包透明似乎有那么点异曲同工之妙，大家可以感受一下。你觉得你能接受在你家门牌号上贴你家资产余额的世界吗？</p>

<p>那么，我们再来看看比特币的另一个优秀特性：没有人能够控制比特币的发行，比特币的总量会止步于2100万。那么如果一个货币不会通货膨胀，由于货币会损耗（RSA私钥丢失），那么一个货币的通货紧缩是必然的。于是，这似乎让人感到很愉悦！因为比特币在到达总量之后，就只会因损耗而减少了，而减少必然导致比特币的升值。这似乎是件对全人类都有益的好事！每个人只要买入比特币，然后坐等他升值就行了，大家都会赚钱。大家有没有发现一个问题？这些收益谁来买单？是的，一个无人控制的比特币市场，只会因为比特币的损耗而不断升值。除非，比特币成为了世界的通行货币，每个人都拥有，那么这种升值便可以被抵消，使货币价格处于一个相对平衡状态。所以，比特币的目标也确实非常明确，如果他不能替代掉现有的货币系统，那么他就是一个类似庞氏骗局的东西，真是一个天堂，一个地狱！</p>

<p>所以，现在看来，比特币其实就像一面镜子，照出了人类自己。比特币成功与否，就看人类自己，这是一场人类自己与自己的博弈：接受一个去中心化的货币，接受所有人的财产全部透明化，政府接受不通过货币来调控经济等等。当然，你也可以进行人类的博弈竞猜：购买比特币。如果你押人类可以战胜自我，那么就买比特币；反之的话，看完这篇文章，该干做什么做什么去，就当什么也没发生。注意，你的选择也会影响到全人类。</p>

<p>ps：因为金融知识有限，只能用黄金做下比喻。如果文章中有什么错误，还望指出。</p>

<p>比特币相关信息</p>

<p>比特币原理详解 <a href="http://www.36kr.com/p/24672.html">http://www.36kr.com/p/24672.html</a></p>

<p>什么是比特币51%攻击？<a href="http://www.btc38.com/btc/btc_learning/219.html">http://www.btc38.com/btc/btc_learning/219.html</a></p>

<p>比特币中国 <a href="https://vip.btcchina.com/">https://vip.btcchina.com/</a></p>

<p>仅过 10 天，最大比特币交易平台 Mt.Gox 再受攻击 <a href="http://www.ifanr.com/news/280564">http://www.ifanr.com/news/280564</a></p>

<p>Mt.Gox <a href="https://www.mtgox.com/">https://www.mtgox.com/</a></p>

<p>目前世界上有多少人拥有比特币？拥有最多比特币的人是谁？(知乎) <a href="http://daily.zhihu.com/story/1809292">http://daily.zhihu.com/story/1809292</a></p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          